package com.alu.basic;

import static org.junit.Assert.assertEquals;
import org.junit.Test;

/**
 * 欧几里得算法
 * 求一个数的最大公约数
 * 
 * @author Administrator
 *
 */
public class Euclid {
	
	/**
	 * 两个数的最大公约数等于其中较小的数除以两数相除的余数的最大公约数
	 * 
	 * @param bigger 较大的数
	 * @param smaller 较小的数
	 * @return
	 */
	public int gcd(int bigger, int smaller) {
		
		if(0 == smaller) return bigger;
		
		int remainder = bigger % smaller;
		
		return gcd(smaller, remainder);
	}
	
	@Test
	public void testGcd() {
		assertEquals(2, gcd(10, 8));
		assertEquals(3, gcd(12, 9));
		assertEquals(1, gcd(11, 7));
	}
}
